Computer software can often benefit from optimization efforts that make the software more efficient. Computer software and program code optimization has generally been known, though it is typically manually performed through trial and experimentation by computer programmers and software engineers. Often, a computer programmer will program in specific optimization data output routines in functions and program segments that they are seeking to optimize. This is often a highly customized and time consuming process and the data that is output will often need to be manually analyzed as well. Once the computer programmer or software engineer has some optimization output information, they can then analyze that information and consider what lessons might be learned from the data.
When considering optimization for scientific kernels of both single process and distributed systems, the mainstream prior approach involves modifying the source code of the original codebase specifically for every target kernel, in order to output the required data, then manually building an optimization framework around the extracted data. These changes to the original codebase can be lengthy and are often irrelevant to the flow of the code, hence they are normally temporary and intended to be removed from a given codebase before committing the source code. In fact, the removal process tends to be manually implemented and can occasionally result in artifacts being left in the code and thus inefficient final code being committed to a particular source code database.
Given these issues, there is a present need in the industry for advanced software and programming optimization methods that can reliably and accurately provide optimization output for both distributed and non-distributed computer software.